// Copyright (C) 2002-2007 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h

#ifndef __E_DRIVER_TYPES_H_INCLUDED__
#define __E_DRIVER_TYPES_H_INCLUDED__

namespace irr
{
namespace video
{

	//! An enum for all types of drivers the Irrlicht Engine supports.
	enum E_DRIVER_TYPE
	{
		//! Null device, useful for applications to run the engine without visualisation.
		//! The null device is able to load textures, but does not render and display
		//! any graphics.
		EDT_NULL,

		//! The Irrlicht Engine Software renderer, runs on all platforms,
		//! with every hardware. It should only be used for 2d graphics,
		//! but it can also perform some primitive 3d functions. These 3d drawing
		//! functions are quite fast, but very inaccurate, and don't even support
		//! clipping in 3D mode.
		EDT_SOFTWARE,

		//! The Burning's Software Renderer, an alternative software renderer for Irrlicht.
		//! Basically it can be described as the Irrlicht Software renderer on steroids. It rasterizes
		//! 3D geometry perfectly: It is able to perform correct 3d clipping, perspective
		//! correct texture mapping, perspective correct color mapping, and renders
		//! sub pixel correct, sub texel correct primitives. In addition, it does
		//! bilinear texel filtering and supports more materials than the EDT_SOFTWARE driver.
		//! This renderer has been written entirely by Thomas Alten, thanks a lot for this huge
		//! contribution.
		EDT_BURNINGSVIDEO,

		//! Direct3D 8 device, only available on Win32 platforms.
		//! Performs hardware accelerated rendering of 3D and 2D primitives.
		EDT_DIRECT3D8,

		//! Direct3D 9 device, only available on Win32 platforms.
		//! Performs hardware accelerated rendering of 3D and 2D primitives.
		EDT_DIRECT3D9,

		//! OpenGL device, available on most platforms.
		//! Performs hardware accelerated rendering of 3D and 2D primitives.
		EDT_OPENGL,

		//! OpenGL device, available on most platforms.
		//! Performs hardware accelerated rendering of 3D and 2D primitives.
		EDT_OPENGLES
	};

} // end namespace video
} // end namespace irr


#endif

